UNIVERSITÉ MOHAMMED V de Rabat
Faculté des Sciences
Département d’Informatique
Filière Licence fondamentale
en Sciences Mathématiques et Informatique
PROJET DE FIN D’ÉTUDES
intitulé :
Mécanismes de haute disponibilité des bases de
données
Présen par :
HMAIMOU Moncif Abdeljalil
EL HOUR Soukaina
soutenu le 20 Juin 2022 devant le Jury
M.Abderrahim AIT WAKRIME Professeur à la Faculté des Sciences - Rabat Président
M.Ahmed EL-YAHYAOUI Professeur à la Faculté des Sciences - Rabat Encadrant
Année universitaire 2021-2022
Remerciements
Au début, on souhaite adresser nos remerciements les plus sincères aux personnes qui
nous ont apporté leur aide et qui ont contribué à l’élaboration de ce mémoire.
On tient à remercier tout particulièrement notre encadrant M. Ahmed El Yahyaoui
pour nous avoir suivis et conseillés tout au long de la réalisation de ce mémoire.
Nous tenons également à remercier et exprimer notre profond respect à M. Abderra-
him Ait Wakrime pour avoir accepter de juger ce travail.
Ce mémoire n’aurait jamais pu voir le jour sans le soutien actif des membres de
notre famille, surtout nos parents qu’ils nous ont toujours encouragé moralement et
matériellement et à qui on tient à les remercier.
Enfin on tient à exprimer vivement nos remerciements avec une profonde gratitude à
toutes les personnes qui ont contribué de près ou de loin à sa réalisation, car un projet
ne peut pas être le fruit d’une seule personne.
i
Résumé
L’objectif de ce projet est de mettre en place un ou plusieurs mécanismes qui assurent
la haute disponibilité des bases de données.
Le présent rapport présente la spécification, la mise en œuvre et la mise à l’essai
de ces mécanismes.
Dans le premier chapitre, nous présentons le projet de fin d’études et introduisons
les concepts qui nous permettent de comprendre notre projet.
Ensuite, nous commençons la présentation des architectures des mécanismes logi-
ciels de MySQL InnoDB Cluster,SQL Server AlwaysOn et Oracle GoldenGate.
Ensuite, dans le troisième chapitre, nous présentons des outils d’implémentation
des deux systèmes de gestion de base de données MySQL et SQL Server . Par la
suite, nous montrons une vision globale de la mise en œuvre des mécanismes de haute
disponibilité dans le quatrième chapitre.
Nous concluons notre rapport par une conclusion et des perspectives.
Mots clés : MYSQL, SQL SERVER, InnoDB Cluster , ALwaysOn, haute dispo-
nibilité, mécanisme, sécurité.
ii
Abstract
The objective of this project is to set up one or more mechanisms that ensure the
high availability of databases.
This report presents the specification, implementation and testing of these mecha-
nisms.
In the first chapter, we present the graduation project and introduce the concepts
that allow us to understand our project.
Next, we begin the presentation of the architectures of the software mechanisms of
MySQL InnoDB Cluster, SQL Server AlwaysOn and Oracle GoldenGate.
Then, in the third chapter, we present tools for implementing both MySQL and
SQL Server database management systems. Subsequently, we show a global view of the
implementation of high availability mechanisms in the fourth chapter.
We conclude our report with a conclusion and perspectives.
Keywords : MYSQL, SQL SERVER, InnoDB Cluster, ALwaysOn, high availabi-
lity, mechanism, security.
iii
Table des matières
Remerciements i
Résumé ii
Abstract iii
Table des figures v
Liste des abréviations viii
Introduction générale ix
1 Contexte et spécification 1
1.1 Objectifs.................................... 1
1.2 DiagrammedeGantt............................. 1
1.3 Présentation.................................. 1
1.3.1 Basededonnées............................ 2
1.3.2 Système de gestion de base données . . . . . . . . . . . . . . . . . 3
1.3.3 Benchamrking des SGBD . . . . . . . . . . . . . . . . . . . . . . 4
1.3.4 Haute disponibilité . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.5 Les mécanismes logiciel pour assurer la haute disponibilité . . . . 6
1.4 Conclusion................................... 6
2 Les mécanismes utilisés 7
2.1 MySQLInnoDB................................ 7
2.2 SQLServerAlwaysOn ............................ 8
2.3 OracleGoldenGate .............................. 10
2.4 Conclusion................................... 12
3 Les outils d’implémentation 13
3.1 MySQLInnoDBCluster ........................... 13
3.1.1 LeserveurMySQL .......................... 13
3.1.2 MySQLRouter ............................ 13
3.1.3 MySQLShell ............................. 14
3.2 SQLServerAlwaysOn ............................ 15
3.2.1 Le serveur SQL Server . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.2 SQL Server Management Studio . . . . . . . . . . . . . . . . . . . 16
iv
3.3 VirtualBox .................................. 16
3.4 WindowsServer................................ 17
3.5 Conclusion................................... 17
4 Realisation 18
4.1 Installationdesoutils............................. 18
4.2 Implémentation................................ 21
4.2.1 InnoDBCluster............................ 21
4.2.2 SQL Server AlwaysOn . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3 Les testes du fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3.1 MySQL InnoDB Cluster : . . . . . . . . . . . . . . . . . . . . . . 27
4.3.2 SQL Server AlwaysOn : . . . . . . . . . . . . . . . . . . . . . . . 29
4.4 Conclusion................................... 33
Conclusion 34
Annexe : InnoDB Cluster installation 36
v
Table des figures
1.2.1 diagramme de Gantt sur la planification du projet. . . . . . . . . . . . . 1
1.3.1basededonnées. ............................... 2
1.3.2 Les différents SGBDs les plus connus. . . . . . . . . . . . . . . . . . . . . 3
1.3.3Tauxdedisponibilité.............................. 5
2.1.1 vue d’ensemble du cluster InnoDB. . . . . . . . . . . . . . . . . . . . . . 7
2.2.1 SQL ServerAlwaysOn entre 2 SQl Servers . . . . . . . . . . . . . . . . . . 9
2.2.2 Architecture de groupe de disponibilité AlwaysOn. . . . . . . . . . . . . . 10
2.3.1 Architecture Golden Gate d’Oracle. . . . . . . . . . . . . . . . . . . . . . 11
3.1.1 MySQL Router achemine les connexions . . . . . . . . . . . . . . . . . . . 14
3.1.2 Démarrage du MySQL Shell. . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.1environnementSSMS. ............................ 16
3.3.1 configuration d’une machine virtuelle. . . . . . . . . . . . . . . . . . . . . 17
4.1.1 installation de MySQL Server. . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.2 installation de MySQL Router. . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.3 installation de MySQL Shell. . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.4 Création d’une machine virtuel. . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.5 Installer Windows Server 2016 sur une machine virtuelle. . . . . . . . . . 20
4.1.6 configuration réseau pour la machine virtuelle . . . . . . . . . . . . . . . 21
4.2.1 création d’une instance MySQl. . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.2 Le cluster « MyCluster ». . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.3 configuration de MySQL Router. . . . . . . . . . . . . . . . . . . . . . . 23
4.2.4 Connexion à une des instances MySQL du cluster. . . . . . . . . . . . . . 23
4.2.5 Installation du rôle Active directory. . . . . . . . . . . . . . . . . . . . . 24
4.2.6 Configuration du domaine : SoukainaMoncef.ma. . . . . . . . . . . . . . . 25
4.2.7 Configuration des utilisateurs. . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2.8 Création du cluster AGSQL2019. . . . . . . . . . . . . . . . . . . . . . . 26
4.2.9 Activer AlwaysOn Availability Groups . . . . . . . . . . . . . . . . . . . . 26
4.2.10Création d’une base de données pour le groupe AlwaysOn . . . . . . . . . 27
4.2.11Groupe de disponibilité AlwaysOn . . . . . . . . . . . . . . . . . . . . . . 27
4.3.1 Création d’une base de données . . . . . . . . . . . . . . . . . . . . . . . 28
4.3.2 Création d’une table et l’insèrer . . . . . . . . . . . . . . . . . . . . . . . 28
4.3.3 basculement vers l’instance disponible . . . . . . . . . . . . . . . . . . . . 28
4.3.4 Visualisation de la base et la table Client . . . . . . . . . . . . . . . . . . 29
4.3.5 Insértion des valeurs dans la table Client . . . . . . . . . . . . . . . . . . 29
4.3.6 Availability Groups Dashboard . . . . . . . . . . . . . . . . . . . . . . . . 30
vi
4.3.7 Création d’une table et l’insèrer . . . . . . . . . . . . . . . . . . . . . . . 30
4.3.8LatableClient................................. 31
4.3.9 l’insertion de la table Client a échouée . . . . . . . . . . . . . . . . . . . . 31
4.3.10Basculement vers SQLNode2 . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3.11Insertion des valeurs dans SQLNode2 . . . . . . . . . . . . . . . . . . . . 32
vii
Liste des abréviations
AD : Active Directory.
AG : Availability Groups.
DDL : Data Definition Language.
DML : Data Manipulation Language.
DNS : Domain Name System.
FCI : Failover Cluster Instances.
IIS : Internet Information Services.
NAT : Network Address Translation.
R/W : Read and Write.
DBMS (SGBD) : Database Management Systems.
SQL : Structured Query Language.
SSMS : SQL Server Management Studio.
WSFC : Windows Server Failover Clustering.
viii
Introduction générale
A l’époque actuelle, le monde connaît une avance technologique considérable et cela
grâce à l’informatique, une science qui joue un rôle important dans le développement de
l’entreprise et d’autres établissements.
L’informatique vient d’être exploitée dans tous les aspects de la vie, et aucun domaine
n’est resté à l’abri de cette politique qui facilite les tâches aussi bien pour l’entreprise que
pour le Personnel. Elle étudie les techniques du traitement automatique de l’information.
Cette information est représentée sous forme des bases de données.
Ces bases de données ont une place importante dans l’informatique, notamment
dans la gestion. Ils jouent un rôle important dans l’entreprise en assurant une excellente
gestion des données.
Il est indéniable qu’une bonne base de données est une excellente source pour une
entreprise. Par conséquent, toutes les données doivent être correctement adaptées afin
de fournir aux agents tous les bons outils pour mieux répondre aux besoins de leurs clients.
C’est qu’intervient l’importance d’un système de gestion de base de données
(SGBD), qui gère : la manipulation des données, l’authentification des utilisateurs,
l’insertion ou l’extraction des données. En effet, c’est l’interface entre la base de données
et les utilisateurs ou leurs programmes.
Cependant, l’indisponibilité de la base de données peut entraîner des coûts énormes
et affecter le fonctionnement normal de l’entreprise.
Et la majorité des causes tombent dans les catégories suivantes :
Erreur humaine.
Panne d’équipement.
Attaque malveillante.
. . . etc.
Donc des solutions sont mises en place par des entreprises pour garantir des services
de bases de données hautement disponibles à leurs utilisateurs.
Ce rapport a pour objectif de présenter les mécanismes utilisés pour assurer la haute
disponibilité des bases de données. Il est organisé en quatre chapitres :
ix
Contexte et spécification : décrivant l’objectifs et les notions.
Mécanismes utilisés : présentant les différents mécanismes logiciels des bases de
données.
Outils d’implémentation : abordant les différents outils utilisés pour l’implémen-
tation des mécanismes.
Réalisation : réalisant et testant le mécanisme.
Finalement, nous concluons avec une synthèse du travail avec des perspectives.
x
Chapitre 1
Contexte et spécification
1.1 Objectifs
L’objectif principal de notre projet consiste à implémenter un mécanisme qui
permettra d’assurer la haute disponibilité d’une base de données.
Le mécanisme implémen va permettre à n’importe quel utilisateur d’utiliser une
base de données disponible
1.2 Diagramme de Gantt
Afin de bien comprendre les besoins du projet et le réaliser, le diagramme de Gant
suivant présente les différentes tâches à suivre le long du projet :
Figure 1.2.1 diagramme de Gantt sur la planification du projet.
1.3 Présentation
De nos jours, chaque entreprise utilise une grande quantité d’informations pour son
fonctionnement ou communiquer avec son environnement.
1
Ces informations sont stockées, traitées et transformées. C’est ce qu’on appelle une base
de données.
1.3.1 Base de données
Une base donnée est un ensemble d’informations stockées et bien organisées en lignes
et colonnes dans des tableaux et avec le moins de redondance possible. Ils sont indexés
pour faciliter la recherche.
Figure 1.3.1 base de données.
Une base de donnes est devisée en plusieurs types, et parmi ces types on trouve :
Base de données relationnelles : c’est un type de base données qui a dominé
les années 80. Elle offre une efficacité et flexibilité d’accéder aux informations
et garantit qu’aucun attribut n’est répété. Ses données sont organisées en un
ensemble de tables comportant des lignes et des colonnes.
Base de données orientées objet : dans une base de données orientées objet,
les informations sont représentées sous forme d’objets qui permettent une bonne
compatibilité avec les langages de programmation orientes objet.
Afin de pouvoir contrôler ces bases de données, le besoin d’un système de gestion qui
permet l’administration de ces derniers s’est vite fait ressentir.
2
1.3.2 Système de gestion de base données
Un système de gestion de base de données SGBD (Database Management Systems)
est un outil qui permet aux utilisateurs de manipuler des données, y compris le stockage,
l’insertion ou l’extraction des données et ainsi exécuter des requêtes.
Il est l’unique interface entre les administrateurs et les données, ainsi entre les utilisateurs
et les données
Au surplus, le SGBD gère le schéma de base de données qui permet de définir la
structure logique de la base de données.
Donc un SGBD doit garantir :
L’indépendance physique et logique des données : pas de changement des
programmes ou l’ensemble des données à cause d’une optimisation, réorganisation,
segmentation, . . .etc.
Sécurité des données : assurer la confidentialité des données par des systèmes
d’authentification, de chiffrement des mots de passe, et de garantir l’intégrité
des données même en cas de panne grâce à des sauvegardes et des journaux qui
gardent des traces des opérations effectues.
L’administration des données : en fournissant des outils pour améliorer les
performances et optimiser le stockage des données.
Parmi les logiciels les plus connus il est possible de citer :
MySQL.
Microsoft SQL Server.
Oracle.
Figure 1.3.2 Les différents SGBDs les plus connus.
3
1.3.3 Benchamrking des SGBD
Tout d’abord, qu’est-ce qu’un benchmarking ?
En effet, l’analyse comparative (ou le benchmark) est une pratique qui consiste à
comparer, analyser et évoluer des produits, des entreprise, . . .etc. Et parmi les dimensions
généralement mesurées sont la performance, le cout, la qualité.
Dans cette partie, on va comparer quelque SGBD qui sont :
MySQL.
SQL Server.
Oracle.
Commençant tout d’abord par MySQL qui est l’un des SGBDs utilises par plusieurs
utilisateurs du web puisqu’il est multi-plateforme et utilise par la plupart des systèmes
d’exploitation tels que Windows, Linux, Mac, .... Aussi MySQL est un open source
gratuit pour tous les utilisateurs souhaitant l’utiliser. Il offre des performances élevées
en restitution (lecture).
Mais bien que MySQL ait de nombreux avantages, il nécessite une grande capacité
de stockage en mémoire (peu réputer pour les bases à gros volume).
Quant à SQL Server, c’est une plat-forme de données édité par Microsoft. Il est plus
facile à utiliser et possède une administration aisée des données.
Néanmoins SQL Server est performant uniquement sous un environnement Microsoft
Windows. Ainsi il impose l’acquisition de licences pour le déploiement d’une application
professionnelle.
Ensuite le leader mondial : Oracle. Il prend en charge un large spectre de systèmes
d’exploitation, notamment Windows Linux.
Aussi il est un choix solide pour assurer la disponibilité des outils (d’administration
de base de données, de développement d’applications et de gestion/déplacement de
données) et des compétences.
Quant aux couts, Oracle a la réputation d’être cher, qu’il s’agisse des licences ou de
l’assistance.
Malgré les différents avantages et inconvénients des trois SGBDs, ils ont inventés des
méthodes et des solutions pour assurer la haute disponibilité des données.
1.3.4 Haute disponibilité
Afin de protéger les données du système et la continuité du fonctionnement, la
sécurité a pour objectif de garantir et d’assurer que les composants du système sont
4
uniquement utilisés dans le cadre prévu.
Et parmi les objectifs qu’elle vise :
La confidentialité : c’est d’empêcher tout accès non autorisé, donc les personnes
autorisées ont accès aux informations. Elle est garantie grâce au chiffrement.
L’intégrité : garantir la cohérence des données et les protéger contre toute
modification non autorisée. L’intégrité est vérifiée à l’aide du hachage.
La disponibilité : l’objectif est de garantir l’accès à un service a une application
ou à une donnée et que cela soit possible en tout temps pour assurer le bon fonc-
tionnement du système. Il y a plusieurs les méthodes qui l’assurer : Répartition
équitable, Redondance, Haute disponibilité.
Donc la haute disponibilité se réfère à un environnement informatique dans lequel
les composants matériels et logiciels restent opérationnels pendant les indisponibilités
planifiées (par exemple des opérations de maintenance régulières) et non planifiées (par
exemple des pannes de matériel, de réseau ou de logiciel inattendues).
Pour disposer d’une solution hautement disponible, il faut :
Avoir une fiabilité des matériels et des logiciels (bases de données, serveurs, appli-
cation, . . .).
La capacite de régler les pannes des composants, les erreurs qui peuvent se produire
lors d’une opération afin de fournir un bon fonctionnement des données.
Avoir une tolérance des pannes et des modifications des bases de données.
La haute disponibilité s’exprime la plupart du temps sous forme de taux de disponi-
bilité. Ce tableau représente la durée d’indisponibilité d’une base de données en fonction
de disponibilité :
Figure 1.3.3 Taux de disponibilité.
Cependant, un système hautement disponible est lorsque son taux de disponibilité est
de 99,99% qui représente une indisponibilité de 53 minutes. Autrement, il n’existe pas
5
un service 100% disponible à cause de plusieurs variables tels que les aspects techniques
ou remplacement des matériels.
Et dans le but d’augmenter le taux de disponibilité, les informaticiens ont inven des
mécanismes qui garantissent cette disponibilité.
1.3.5 Les mécanismes logiciel pour assurer la haute disponibilité
Afin d’avoir une architecture hautement disponible et fiable, ces mécanismes sont
utilisés :
Architecture in load balancing (ou répartition de charge) : appelé aussi
équilibrage des charges. Cette répartition consiste à repartir la charge du travail
(acheminement des données, des requêtes, etc.) sur un groupe de serveurs afin
d’éviter la surcharge et les pannes des composants.
Failover (basculement) : c’est un moyen qui permet aux utilisateurs de
sauvegarder les données dans un système secondaire si le premier tombe en
panne. Il consiste à rediriger les taches vers le système secondaire pour garantir
la continuité des opérations.
Clustering : un cluster est tout simplement un groupe de serveurs qui prennent la
charge de travail des bases de données. Il est utilisé pour assurer les 2 mécanismes
ci-dessus (équilibrage de charge et basculement).
En guise de conclusion, tous ces mécanismes ont pour but d’assurer et de garantir la
haute disponibilité.
1.4 Conclusion
Dans cette partie nous avons présenté l’objectif du projet et les différentes notions
tel que la base de données, la haute de disponibilité et les mécanismes.
Le chapitre suivant est consacré à l’explication des architectures des mécanismes qui
permettent d’assurer la haute disponibilité des trois SGBDs : MySQL, SQL Server et
Oracle.
6
Chapitre 2
Les mécanismes utilisés
De nos jours, il est nécessaire d’avoir une solution de haute disponibilité qui garantit
la sécurité de vos données.
Pour ça, il existe plusieurs méthodes et solutions qui assure cette disponibilité.
Dans ce chapitre nous présentons les différents mécanismes des trois populaires sys-
tèmes de gestion de bases de données : MySQL, SQL Server et Oracle.
2.1 MySQL InnoDB
InnoDB Cluster est une solution de haute disponibilité par MySQL en combinant ses
différentes technologies.
Cette solution est gratuite et open source pour une haute disponibilité avec de grands
avantages : une installation simple, des exigences minimales et une facilité d’utilisation.
InnoDB Cluster contient 3 composant principale :
Réplication de groupe MySQL.
Routeur Mysql.
Mysql shell.
Figure 2.1.1 vue d’ensemble du cluster InnoDB.
7
La réplication de groupe MySQL est un moyen pour créer un système tolérant aux
pannes en fournissant une réplication de serveurs de base de données. Ces serveurs sont
répliqués sur plusieurs nœuds, et lorsqu’il y a des modifications qui se produisent au
niveau des données, elles sont répliquées automatiquement sur les nœuds secondaires.
Elle s’agit d’une réplication synchrone qui protège les données en cas de défaillance
du nœud maitre.
Ensuite il y a le routeur MySQL. Lors d’un basculement, c’est le routeur MySQL qui
gère le trafic en dirigeant l’application d’un client qui envoie des requêtes vers l’instance
MySQL disponible.
C’est l’un des composant importants pour assurer la haute disponibilité en acheminant
le trafic de la base de données vers les serveurs MySQL.
Et enfin mysql shell qui facilite à l’aide AdminAPI la configuration et l’administration
de groupe d’instances de serveur MySQL pour fonctionner comme un cluster.
Ces deux derniers composants sont bien expliqués dans le chapitre suivant.
2.2 SQL Server AlwaysOn
Et si InnoDB Cluster est une solution pour assurer la haute disponibilite de MySQL,
AlwaysOn est une pour Sql Server.
Introduit depuis SQL Server 2012, il est composé de deux technologie :
Instances de clustering de basculement AlwaysOn (FCI AlwaysOn).
Groupes de disponibilité AlwaysOn (AlwaysOn AG).
Ces deux technologies assurent une haute disponibilité et une reprise après sinistre,
mais à des niveaux différents : au niveau de SQL Server pour FCI et au niveau de la
base de données pour le groupe de disponibilité.
L’idée des instances de clustering de basculement (FCI) est d’avoir plusieurs instances
SQL Server qui partage le même stockage ; ce stockage est un point de défaillance unique,
donc il est nécessaire d’avoir une autre copie de données conservées .
Ainsi la technologie FCI prend au moins 30 secondes.
Par contre un groupe de disponibilité AlwaysOn (AlwaysOn AG) est un groupe de
bases de données principaux et secondaires qui basculent ensemble.
Ces bases de données appelés réplicas de disponibilité sont les composants principaux
du groupe de disponibilité Always On. Chaque réplica de disponibilité se voit assigner
un rôle initial, soit le rôle principal, soit le rôle secondaire.
8
Ces rôles déterminent comment les bases de données sont hébergées : en lecture-écriture
ou en lecture seule.
Une base de données principale (aussi réplica principal) assure l’envoie des enregistre-
ments du journal des transactions a la base de données secondaire.C’est ce qu’on appelle
la synchronisation des données. Ce processus se produit entre une base de données
principale et une base de données secondaire connectée.
Figure 2.2.1 SQL ServerAlwaysOn entre 2 SQl Servers .
Les groupes de disponibilité AlwaysOn a deux modes de disponibilité :
Mode de validation asynchrone : ce mode minimise la latence des transac-
tions sur les bases de données secondaires. Ce mode signifie que le serveur renvoie
le succès de l’opération dès que la transaction est terminée c’est-à-dire avant que les
enregistrements du journal ne soient stockés sur le disque. Cependant il y a des risques
de pertes de données même s’il apporte une accélération importante pour les transactions.
Mode de validation synchrone : dans ce mode, le serveur renvoie l’information du
succès de l’opération après la sauvegarde des enregistrements des journaux de transaction
sur le disque. Ce mode augmente la sécurité et la protection des transactions même en
cas d’arrêt brutal.
Et afin de déployer ces réplicas de disponibilité, le groupe de disponibilité de
AlwaysOn a besoin d’un cluster de basculement Windows Server (WSFC).
Il s’agit d’un groupe de serveurs indépendants permet d’augmenter la disponibilité
en utilisant quorum pour surveiller la sante global du cluster et minimiser les risques des
pannes au niveau des nœuds.
9
Ensuite, le dernier composant est l’écouteur du groupe de disponibilité (availability
group listener).
Ce composant permet aux utilisateurs de se connecter et d’accéder à la base de don-
nées principale ou secondaire d’un groupe de disponibilité. Si le réplica principal n’est
plus disponible, il peut utiliser l’adresse pour acheminer les connexions vers les réplicas
disponibles.
Figure 2.2.2 Architecture de groupe de disponibilité AlwaysOn.
2.3 Oracle GoldenGate
Pour garantir la haute disponibilité de ses données, oracle a inven un logiciel qui
permet de répliquer les données, les filtrer et les transformer d’une base de données à
une autre. Ce produit logiciel est Oracle GoldenGate.
GoldenGate est un mécanisme de réplication hétérogène plus flexible et capable de
transformer les données pendant leur réplication vers d’autres bases de données.
Parmi les fonctionnalités d’Oracle GoldenGate :
La transformation des données, en garantissant une gestion des conflits lors de leur
réplication entre deux bases de données.
Permettre aux deux bases de données de fonctionner simultanément en assurant
l’intégrité des données.
Il est composé de :
10
Extraction (Extract) : c’est un moyen de capture d’oracle GoldenGate .il est
configuré de deux manières :
Initial load : il capture les données directement à partir de leurs objets source.
Change synchronisation : capture les opérations DML (un langage qui définit
la structure des données) et DDL (un langage qui manipule les données) après
la synchronisation initiale.
Data Pump : c’est un ensemble d’Extractions secondaires. L’extraction primaire
écrit dans un fichier de suivi les informations capturées. Data Pump va lire et
envoyer les informations au fichier de suivi distant. Ce composant a pour rôle de
protéger le réseau contre les pannes et d’assurer une synchronisation de la source
avec les autres cibles.
Réplica (Replicat) : il s’agit du processus de lecture des fichiers de trace et de
reconstruction des opérations DML et DDL et de leur application à la base de
données.
Fichiers de suivi (Trail Files) : contient les modifications capturées et stockées
par Oracle GoldenGate.
Gestionnaire (Manager) : ou processus de contrôle, exécutant des fonctions
telles que le démarrage des processus Oracle GoldenGate et des processus dy-
namiques, la gestion des numéros de port pour les processus et la gestion des traces.
Collectionneur (Collector ) : lorsqu’il y a une demande de connexion d’un
extrait distant au gestionnaire, résolvez et liez à un port disponible, puis envoyez
le numéro de port au demandeur d’extraction que le gestionnaire affecte au
processus de traitement. Il écrit les modifications capturées envoyées par pull et
les écrit dans le suivi à distance.
Figure 2.3.1 Architecture Golden Gate d’Oracle.
11
2.4 Conclusion
En conclusion, chaque SGBD a une architecture différente qui garantit la haute
disponibilité de ses données.
Pour les prochains chapitres ,nous allons voir les outils et l’implémentation des deux
mécanismes : InnoDB Cluster et SQL Server AlwaysOn.
12
Chapitre 3
Les outils d’implémentation
Après avoir les différentes architectures des mécanismes de la haute disponibilité, dans
cette partie nous allons présenter les différents outils pour implémenter ces mécanismes
( InnoDB Cluster et SQL Server AlwaysOn).
3.1 MySQL InnoDB Cluster
Pour avoir une base de données MySQL hautement disponible nous avons besoin de :
MySQL Server, MySQL Router et MySQL shell.
3.1.1 Le serveur MySQL
Le serveur MySQL est un logiciel open source gratuit .il est proposé en deux éditions
différents :
Edition de communauté MySQL : vous pouvez le télécharger, accéder au code
source et l’utiliser gratuitement.
Edition de Entreprise MySQL : il nécessite un abonnement annuel .il contient
plusieurs produits commerciaux fournissant un support professionnel et d’autres
avantages.
Ce serveur gère les grandes bases de données de manière fiable et rapide en fournis-
sant un système de gestion de base de données avec une capacite d’interrogation et de
connectivite, une sécurité qui le rend adapté à l’accès aux bases de données.
3.1.2 MySQL Router
MySQL Router est un composant important dans l’architecture de InnoDB Cluster.
Et pour que les applications clientes gèrent le basculement, elles doivent connaître la
topologie du cluster InnoDB et savoir quelle instance MySQL est la PRIMARY. MySQL
13
Router fournit et gère cette fonctionnalité.
MySQL utilise la réplication de groupe pour répliquer les bases de données sur
plusieurs serveurs tout en effectuant un basculement automatique en cas de panne du
serveur. Lorsqu’il est utilisé avec un cluster MySQL InnoDB, MySQL Router agit comme
un proxy ( une application serveur qui agit comme intermédiaire entre un client et le
serveur ) pour masquer plusieurs instances MySQL sur le réseau et mapper les demandes
de données à une instance du cluster.
Donc les applications peuvent contacter n’importe lequel d’entre eux tant qu’un
nombre suffisant de répliques sont en ligne et que la communication entre les composants
est intacte.
MySQL Router le fait également en permettant aux applications de se connecter à
MySQL Router au lieu de se connecter directement à MySQL.
Figure 3.1.1 MySQL Router achemine les connexions .
3.1.3 MySQL Shell
MySQL Shell est un outil de configuration qui peut être utilisé pour connecter,
déployer et gérer le cluster MySQL InnoDB.
En plus de la fonctionnalité SQL fournie, similaire à MySQL, MySQL Shell inclut
les API implémentées en JavaScript et Python que vous pouvez utiliser pour développer
du code qui interagit avec MySQL. Lorsque MySQL Shell démarre, il est en mode
JavaScript par défaut.
14
Figure 3.1.2 Démarrage du MySQL Shell.
Ainsi MySQL Shell contient une API d’administration appelée MySQL AdminAPI.
Cette API, fourni par MySQL Shell, est accessible via une variable globale appelée
« dba ». Avec ses méthodes associées, la variable dba fournit des opérations qui
permettent de déployer, configurer et administrer InnoDB Cluster ; Par exemple, utilisez
la dba.createCluster()méthode pour créer un cluster InnoDB.
En outre, MySQL AdminAPI prend en charge l’administration de certaines tâches
liées au routeur MySQL, telles que la création et la mise à jour d’utilisateurs qui vous
permettent d’intégrer votre InnoDB Cluster.
3.2 SQL Server AlwaysOn
3.2.1 Le serveur SQL Server
Le serveur SQL Server est un système de gestion de bases de données. Cet outil a
plusieurs avantages et caractéristiques qui permettent aux utilisateurs de manipuler les
données, les contrôler d’une façon organisée et bien structurée. Ainsi, SQL Server est
considéré moins cher par rapport à d’autre SGBD (comme Oracle).
Parmi ses fonctionnalités :
Une optimisation de stockage (gérer les bases de données volumineuses).
Une gestion de la haute disponibilité (SQL Server AlwaysOn).
Une gestion de la sécurité avancée en mode d’authentification (Windows /SQL
Server).
Pourtant, il faut utiliser un composant qui nous permet de gère l’infrastructure de SQL
Server : SSMS.
15
3.2.2 SQL Server Management Studio
SQL Server Management Studio est l’interface entre l’utilisateur et le serveur SQL
Server. Il regroupe un ensemble de méthodes et d’outils de conception graphique et
visuelle pour administrer les bases de données du groupe de disponibilité SQL Server
ALwaysOn (AG), simplifier le travail et fournir un accès continue aux données en cas
d’une panne d’une base de données SQL Server.
SSMS a plusieurs avantages qui sont :
Une facilité d’installation.
Une haute sécurité et une performance améliorée.
Un accès rapide aux données.
Figure 3.2.1 environnement SSMS.
3.3 Virtual Box
Virtualbox est un logiciel open source qui permet de construire une architecture
virtuelle. Il crée des machines virtuelles dans lesquelles on peut ajouter des systèmes
d’exploitation.
Ces systèmes d’exploitation sont appelés des systèmes d’exploitation « invités ».
Dans la configuration d’une machine virtuelle, nous pouvons préciser le nombre de cœurs
de processeur, la taille du RAM et l’espace disque dédié à la machine virtuelle.
C’est un composant important dans l’implémentation de SQL Server AlwaysOn.
16
Figure 3.3.1 configuration d’une machine virtuelle.
3.4 Windows Server
Windows server est une instance de serveur qui est gérée et exploitée par le système
d’exploitation Windows Server. Il offre des fonctionnalités et des mécanismes similaires
à celle des systèmes d’exploitation de serveur standard.
Ainsi, Windows server assure une excellente sécurité des informations d’authentifi-
cation des administrateurs, un temps d’arrêt minimum, un support des logiciels obsolètes.
c’est un élément important dans la configuration de SQL Server ALwaysOn .
3.5 Conclusion
Ce chapitre a présen les différents outils utilises pour implémenter les mécanismes
de la haute disponibilité InnoDB Cluster et SQL Server AlwaysOn.
Dans le chapitre suivant, nous allons expliquer les étapes d’implémentation de ces
mécanismes et avec des tests.
17
Chapitre 4
Realisation
Après avoir présenter les mécanismes utilisés et les outils d’implémentation, nous
abordons dans ce chapitre le dernier volet de ce rapport, qui a pour objectif d’exposer la
phase de réalisation. La phase de réalisation est considérée comme étant la concrétisation
finale de toute ce qui précède.
4.1 Installation des outils
Tout d’abord une installation des outils est nécessaire pour l’implémentation des
mécanismes.
Pour MySQL InnoDB cluster , Il faut installer les trois composant principaux :
MySQL Server :
Figure 4.1.1 installation de MySQL Server.
MySQl router :
18
Figure 4.1.2 installation de MySQL Router.
MySQL Shell :
Figure 4.1.3 installation de MySQL Shell.
Pour SQL Server, on a besoin d’installer virtualBox pour créer trois machines
virtuelles avec Window server :
Sur la première machine nous allons configurer AD et un domaine de contrôle. les
deux autres machine sont les deux nœuds principale et secondaire dans le groupe SQL
Server AlwaysOn Availability.
19
Figure 4.1.4 Création d’une machine virtuel.
Ensuite la configuration de Windows Server :
Figure 4.1.5 Installer Windows Server 2016 sur une machine virtuelle.
cette configuration pour les trois machines virtuelles.
par defaut , une machine virtuels est configurée pour NAT(traduction d’adresses réseau).
il faut la reconfigurer en selectionnant l’adaptateur Ethernet :
20
Figure 4.1.6 configuration réseau pour la machine virtuelle
Ensuite télécharger SQL Server et SSMS pour l’installation de SQL Server dans les
deux nœuds.
4.2 Implémentation
Dans cette partie nous allons implémenter les deux mécanismes : InnoDB Cluster et
SQL Server AlwaysOn.
4.2.1 InnoDB Cluster
Dans MySQl Shell, on va créer les trois instances de serveur MySQL a l’aide de la
fonction dba.deploySandboxInstance() :
21
Figure 4.2.1 création d’une instance MySQl.
Après une création d’un cluster nommé « MyCluster » qui va regrouper ces instances :
Figure 4.2.2 Le cluster « MyCluster ».
Le cluster MySQL InnoDB Cluster est opérationnel.
22
Maintenant nous avons besoin de configurer le routeur MySQL pour effectuer les
opérations de routage en cas d’une défaillance.
A l’aide de l’option « -bootstrap », le routeur MySQL pointe sur l’instance actuelle
du serveur MySQL R/W du cluster :
Figure 4.2.3 configuration de MySQL Router.
Finalement on peut se connecter directement à l’une des instances du serveur MySQL :
Figure 4.2.4 Connexion à une des instances MySQL du cluster.
23
4.2.2 SQL Server AlwaysOn
Après l’installation des trois machines virtuelles, il faut configurer le contrôleur de
domaine et Active Directory.
Pour bien comprendre leur fonctionnalités et rôles, voilà une petite description :
Contrôleur de domaine : répond aux demandes d’authentification et contrôle
les utilisateurs des réseaux informatiques.
DNS : C’est une méthode standard pour associer des noms au lieu de l’adresse
IP.
Active directory : C’est un conteneur qui se compose d’une unité d’organisation
de tous les utilisateurs, de leurs informations d’identification et de leurs groupes.
Tous les utilisateurs doivent être authentifiés pour utiliser les ressources organisa-
tionnelles.
Figure 4.2.5 Installation du rôle Active directory.
24
Figure 4.2.6 Configuration du domaine : SoukainaMoncef.ma.
et création des utilisateurs pour l’authentification au domain et SQL Server :
Figure 4.2.7 Configuration des utilisateurs.
Après la configuration du domaine il faut ajouter les deux nœuds dans le domaine
SoukainaMoncef.ma pour les groupes de disponibilité.
Ensuite, nous devons configurer le cluster de basculement Windows pour SQLNode1
et SQLNode2 en ajoutant ces rôles et fonctionnalités :
.Net Framework 3.5 Features.
Failover Clustering.
Web server(IIS).
Ces fonctionnalités nous permettent de créer un cluster ( AGSQL2019) qui contient
les deux nœuds :
25
Figure 4.2.8 Création du cluster AGSQL2019.
Après il faut installer SQl Server sur les deux nœuds SQLNode1 et SQLNode2 et
activer la fonctionnalité SQL Server AlwaysOn groups sur SQLNode1 et SQlNode2 :
Figure 4.2.9 Activer AlwaysOn Availability Groups .
Avant de créer le groupe de disponibilité ,il faut créer une base de données
DB_CLUSTER afin de partager les données avec la base de données secondaire :
26
Figure 4.2.10 Création d’une base de données pour le groupe AlwaysOn .
Ensuite on crée un groupe de disponibilité MoncefAG2019 qui contient les deux nœuds
avec une synchronisation des données.
Figure 4.2.11 Groupe de disponibilité AlwaysOn .
4.3 Les testes du fonctionnement
4.3.1 MySQL InnoDB Cluster :
Afin de tester Innodb Cluster , nous allons créer une base de données dans l’instance
disponible :
27
Figure 4.3.1 Création d’une base de données .
Ensuite dans cette base de données, nous allons créer une table nommée Client et
insérer des valeurs :
Figure 4.3.2 Création d’une table et l’insèrer .
On désactive l’instance de serveur MySQl principale à l’aide de la fonction
dba.killSandBoxInstance() et vérifie le basculement :
Figure 4.3.3 basculement vers l’instance disponible .
28
Et pour s’assurer que la base de donnees et sa table sont déjà créer dans la nouvelle
instance principale :
Figure 4.3.4 Visualisation de la base et la table Client .
Et même insérer des valeurs :
Figure 4.3.5 Insértion des valeurs dans la table Client .
4.3.2 SQL Server AlwaysOn :
Pour tester la haute disponibilite de groupe de disponibilité de SQL Server AlwaysOn :
29
Figure 4.3.6 Availability Groups Dashboard .
pour ça nous allons créer une table dans la base "DB_CLUSTER" et l’inserer :
Figure 4.3.7 Création d’une table et l’insèrer .
on peut constater que notre table Client est dans la base secondaire aussi :
30
Figure 4.3.8 La table Client .
Mais la base secondaire est en mode lecture seule , donc si on essaie d’inserer la table
Client il y aura un echec :
Figure 4.3.9 l’insertion de la table Client a échouée .
31
donc il faut basculer vers la base de données secondaire :
Figure 4.3.10 Basculement vers SQLNode2 .
Finalement on peut insèrer des valeurs dans la table Client : donc il faut basculer vers
la base de données secondaire :
Figure 4.3.11 Insertion des valeurs dans SQLNode2 .
32
4.4 Conclusion
En conclusion, nous avons installé les deux mécanismes : MySQL InnoDB Cluster et
SQL Server AlwaysOn.
Ces mécanismes assurent la disponibilité des bases de données et une synchronisation
des données dans les bases de données primaires et secondaires.
33
Conclusion
Finalement, la base de données est un élément important dans l’infrastructure du
système. Elle a facilité l’administration et la gestion des information en permettant aux
entreprises de gérer les informations et d’accéder à des données de manière globale.
Elle permet aux utilisateurs de consulter, saisir ou mettre à jour des données tout en
garantissant les droits qui leur sont accordés à l’aide des systèmes de gestion de base de
données (SGBD).
Cependant, la surcharge du travail, la croissance rapide des données, la perte des
données lié à des défaillances imprévues présentent une crainte pour les entreprises
et ralentissent le bon fonctionnement d’une base de données ce qui nécessite une
implémentation qui assure la sécurité de ces données. Alors les informaticiens ont inven
des méthodes comme le basculement (FailOver) et le Clustering.
Ces deux méthodes nous ont permis d’implémenter des mécanismes logiciels tel que
MySQL InnoDB Cluster pour MySQL et SQL Server AlwaysOn pour Microsoft SQL
server.
Ces deux mécanismes assurent cette disponibilité en offrant, à l’aide du clustering,
une réplication de base de données (primaires et secondaires) avec une excellente
synchronisation des données qui permet aux utilisateurs d’accéder aux données sur
plusieurs base de données et minimise le risque de perte des données en cas d’une
défaillance. Et lors d’une panne d’un composant ,le basculement garantit la continuité
de service de la base de données.
Pour conclure, ce projet nous a permis de découvrir des connaissances nouvelles,
de renforcer nos connaissances sur le système et la sécurité, d’acquérir une vision
plus claire sur le fonctionnement des bases de données et des outils utilisés lors de
l’implémentation comme MySQL Router, MySQL Shell, VirtualBox, Windows Server . . ..
D’un point de vue personnel nous avons été séduit par des nouvelles technologies.
Bien que les mécanismes furent difficile à assimiler et les outils très nombreux, la
satisfaction de les voir fonctionner ensemble a pris le pas sur les difficultés rencontrées.
Ce projet ne s’arrête pas à ce stade, mais il va continuer pour implémenter le méca-
nisme du système de gestion de base de données Oracle : Oracle GoldenGate et découvrir
ses différents outils utilisés pour assurer la haute disponibilité d’Oracle.
34
Bibliography
Webographie
[1] https ://www.astera.com/fr/type/Blog/un-aper%C3%A7u-rapide-des-
diff%C3%A9rents-types-de-bases-de-donn%C3%A9es - visité le 18/06/2022
[2] https ://ww.oracle.com/fr/database/base-de-donnees-relationnelle-definition.html
- visité le 18/06/2022
[3] https ://ww.oracle.com/fr/database/systeme-gestion-base-de-donnees-sgbd-
definition.html - visité le 18/06/2022
[4] https ://ww.ionos.fr/digitalguide/hebergement/aspects-techniques/bases-de-
donnees-orientees-objet/ - visité le 18/06/2022
[5] https ://ww.appdynamics.com/topics/database-management-systems 1-what-is-
dbms - visité le 18/06/2022
[6] https ://gbd.developpez.com/tutoriels/cours-complet-bases-de-
donnees/ ?page=objectifs-et-architecture-des-sgbdLVII-3-1 - visité le 18/06/2022
[7] https ://ww.journaldunet.fr/web-tech/dictionnaire-du-webmastering/1445286-
haute-disponibilite-en-informatique-definition-concrete-et-conseils-pratiques/ -
visité le 18/06/2022
[8] https ://ev.mysql.com/doc/refman/8.0/en/mysql-innodb-cluster- introduc-
tion.html : :text=An%20InnoDB%20Cluster%20consists%20of,and%20code%20edi-
tor%20for%20MySQL - visité le 18/06/2022
[9] https ://ev.mysql.com/doc/mysql-shell/8.0/en/ - visité le 18/06/2022
[10] https ://ev.mysql.com/doc/mysql-router/8.0/en/mysql-router-innodb- clus-
ter.html : :text=MySQL%20Router%20is%20part%20of,appropriate%20back
%2Dend%20MySQL%20servers - visité le 18/06/2022
[11] https :///docs.microsoft.com/en-us/sql/database-engine/availability-
groups/windows/overview-of-always-on-availability-groups-sql-server ?view=sql-
server-ver16 - visité le 18/06/2022
35
Annexe : InnoDB Cluster installation
36